package org.zebra.mybatis.plus.ext.datapermission;

import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;

import java.lang.reflect.Method;

/**
 * 数据权限规则接口
 * 通过实现接口，自定义数据规则
 *
 * @author zhanghongbin
 */
public interface DataPermissionRule {

    Expression getExpression(Method method);

    /**
     * 根据sql获取 expression 对象
     *
     * @param sql sql
     * @return 表达式对象
     * @throws Exception 异常
     */
    default Expression parse(String sql) throws Exception {
        return CCJSqlParserUtil.parseExpression(sql);
    }
}
